Hailstones

Neste problema, estudaremos a sequência de números $A$, conhecida como "números de granizo" (hailstone sequence) ou "números maravilhosos".

O valor da sequência no momento inicial, $a[0]$, pode ser qualquer valor. A partir dele, a sequência evolui de acordo com as seguintes regras:

$$a[n+1]=\begin{cases}\frac{a[n]}{2} & a[n]\;\text{par} \\ 3\cdot a[n] + 1 & a[n]\;\text{ímpar}\end{cases}$$

A Conjectura de Collatz afirma que, independentemente do valor de $a[0]$, a sequência sempre atingirá um valor $k$ tal que $a[k]=1$. Não vamos testar nem tentar provar essa conjectura aqui, mas escreveremos um programa curto para simular essa sequência.

Escreva uma função hailstone_sequence(a_0) que recebe um número inteiro representando $a[0]$ e retorna uma lista representando os valores na sequência $A$ de $a[0]$ até o valor $k$ de modo que $a[k]=1$, inclusive. Você pode assumir que a conjectura de Collatz é correta (quer dizer, que a sequência vai eventualmente atingir o valor $1$).

Embora não iremos checar se você usou uma solução iterativa ou recursiva, você deve tentar escrever o programa de ambas as formas.

Submissão

Quando estiver pronto (depois de ter simulado manualmente e testado em sua própria máquina e estiver convencido de que seu programa fará a coisa certa), faça upload do seu arquivo Python no Problema 3.7 no Gradescope. Lembre de nomear seu arquivo p3_7.py.